//7.整数反转
//https://leetcode.cn/problems/reverse-integer/
class Solution {
public:
    int reverse(int x) {
        //-2147483648~2147483647
        //这里只需要注意 -2147483640~2147483640 而末尾的8和7一定不会超过
        //因为一旦超过 反转后8和7成为数字的最高位就会超过INT_MAX和INT_MIN
        //这里判断INT_MAX和INT_MIN 两数除10的单位 这样不会越界
        int ret = 0;
        while (x)
        {
            if (ret > INT_MAX / 10 || ret < INT_MIN / 10) return 0;
            ret = (ret * 10) + (x % 10);
            x /= 10;
        }

        return ret;
    }
};

//异常解法
// class Solution {
// public:
//     int reverse(int x) {
//         try
//         {
//             string s = to_string(abs(x));
//             std::reverse(s.begin(),s.end());
//             if(x < 0) s = '-'+s;
//             return stoi(s);
//         }
//         catch(...) { return 0; }

//         return 0;
//     }
// };